/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ejercicio.practica2;

import static java.lang.Math.atan2;
import static java.lang.Math.cos;
import static java.lang.Math.pow;
import static java.lang.Math.sin;
import static java.lang.Math.sqrt;

/**
 *
 * @author manolo
 */
public class Complejos {

    private float real;    
    private float imaginaria;

    /**
     * Get the value of imaginaria
     *
     * @return the value of imaginaria
     */
    public float getImaginaria() {
        return imaginaria;
    }

    /**
     * Set the value of imaginaria
     *
     * @param imaginaria new value of imaginaria
     */
    public void setImaginaria(float imaginaria) {
        this.imaginaria = imaginaria;
    }

    /**
     * Get the value of real
     *
     * @return the value of real
     */
    public float getReal() {
        return real;
    }

    /**
     * Set the value of real
     *
     * @param real new value of real
     */
    public void setReal(float real) {
        this.real = real;
    }

   

    public Complejos() {
    }

    public Complejos(float real, float imaginaria) {
        this.real = real;
        this.imaginaria = imaginaria;
    }

    public static float modulo(Complejos c) {
        return (float) sqrt(pow(c.real, 2) + pow(c.imaginaria, 2));
    }

    public float argumento(Complejos c) {
        float angulo = (float) atan2(c.imaginaria, c.real);     //devuelve el ángulo entre -PI y +PI
        if (angulo < 0) {
            angulo = (float) (2 * Math.PI + angulo);
        }
        return (float) angulo;
    }

    public Complejos suma(Complejos c1, Complejos c2) {
        float x = c1.real + c2.real;
        float y = c1.imaginaria + c2.imaginaria;
        return new Complejos(x, y);
    }

    public Complejos resta(Complejos c1, Complejos c2) {
        float x = c1.real - c2.real;
        float y = c1.imaginaria - c2.imaginaria;
        return new Complejos(x, y);
    }
    
    public Complejos multiplicacion(Complejos c1, Complejos c2)
    {
        float mod = modulo(c1)*modulo(c2);
        float arg = argumento(c1)+argumento(c2);
        float x = (float) (mod*cos(arg)); 
        float y = (float) (mod*sin(arg));
        return new Complejos(x,y);
    }
     public Complejos division(Complejos c1, Complejos c2)
    {
        float mod = modulo(c1)/modulo(c2);
        float arg = argumento(c1)-argumento(c2);
        float x = (float) (mod*cos(arg)); 
        float y = (float) (mod*sin(arg));
        return new Complejos(x,y);
    }
}
